package classesBD;

import aplicacao.funcoes;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Pessoal
 */
public class Livro extends Documento{
  private int idLivro;
  private int serie;
  private String cdRom;
  
  
  
  @Override
  public int insere(boolean checaExistencia){
    if (checaExistencia){
      idLivro = existe(super.titulo);
    }  
    if (idLivro == 0){
        try {
            super.insere(true);
            String[] campos = new String[4];
            campos[0] = "default";
            campos[1] = Integer.toString(serie);  
            campos[2] = cdRom;
            campos[3] = Integer.toString(super.idDocumento);
            String query = funcoes.montaInsert("LIVRO", campos);
            idLivro = Conexao.executa(query, true);
            Conexao.fecha();
        } catch (SQLException ex) {
            Logger.getLogger(Livro.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    return idLivro;
  }

  @Override
  public void buscaPorId(int id) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public void buscaPorNome(String nome) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public boolean preencheAttr(String attr, String valor) {
    String atributo = attr.toLowerCase();
    boolean result = true;
    switch(atributo){
      case "editor":super.preencheAttr(attr, valor);
        break;
      case "serie": serie = Integer.parseInt(valor);
        break;
      case "cdrom": cdRom = valor;
        break;
      default: result = super.preencheAttr(attr, valor);
    }
    return result;
  }

 @Override
  public String existe(int id) {
    String query = "SELECT D.TITULO FROM DOCUMENTO D JOIN LIVRO L ON L.IDDOCUMENTO = D.IDDOCUMENTO WHERE IDDOCUMENTO=" + Integer.toString(id);
    String[][] retorno = Conexao.pesquisa(query, 1);
    if (retorno.length > 0){
      return retorno[0][0];
    }else{
      return "";
    }
  }

  @Override
  public int existe(String nome) {
    nome = nome.toLowerCase();
    String query = "SELECT L.IDLIVRO FROM LIVRO L JOIN DOCUMENTO D ON D.IDDOCUMENTO = L.IDDOCUMENTO WHERE LOWER(D.TITULO)=" + funcoes.quotedStr(nome);
    String[][] retorno = Conexao.pesquisa(query, 1);
    if (retorno.length > 0){
      return Integer.parseInt(retorno[0][0]);
    }else{
      return 0;
    }
  }
}
